#ifndef Binding_h__
#define Binding_h__

#include "Singleton.h"
#include "Visual.h"
#include "Path.h"

namespace le
{
	struct StartupStruct;
	class Renderer;
	class Scene;
	class InputManager;
}

namespace le
{
	class Binding: public le::Singleton<le::Binding>
	{
	public:
		Binding();
		~Binding();

		void CreateBindings(const le::StartupStruct& startupStruct);
		void DestroyBindings();

		le::Renderer* GetRenderer() const {return m_Renderer;}
		le::Visual* CreateVisualFromFile(const le::Path& path);

		le::Scene* GetScene() const {return m_ActiveScene;}

		le::InputManager* GetInputManager() const {return m_InputManager;}

	private:
		le::Renderer* m_Renderer;
		le::InputManager* m_InputManager;

		/** Is this the correct place to set the active scene? */
		le::Scene* m_ActiveScene;
	};
}

#endif // Binding_h__